package com.ruoyi.filter;

import org.jasig.cas.client.authentication.AuthenticationFilter;
import org.jasig.cas.client.session.SingleSignOutFilter;
import org.jasig.cas.client.session.SingleSignOutHttpSessionListener;
import org.jasig.cas.client.util.HttpServletRequestWrapperFilter;
import org.jasig.cas.client.validation.Cas30ProxyReceivingTicketValidationFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.EventListener;
import java.util.HashMap;
import java.util.Map;

/**
 * @ClassName JXXYFilter     配置单点登录的过滤器
 * @Description TODO     嘉兴学院教师要求
 *      老师说了后，添加到这里。使用时将注解放出来，启动时将过滤器加载到spring容器
 * @Author lvyongwei
 * @Date 2020
 **/
//@Configuration
public class JXXYFilter {

    // /**
    //  * 配置登出过滤器(过滤器顺序有要求，先登出-》授权过滤器-》配置过滤验证器-》wraper过滤器)
    //  * @return
    //  */
    // @Bean
    // public FilterRegistrationBean filterSingleRegistration() {
    //     final FilterRegistrationBean registration = new FilterRegistrationBean();
    //     registration.setFilter(new SingleSignOutFilter());
    //     // 设定匹配的路径
    //     registration.addUrlPatterns("/*");
    //     Map<String,String> initParameters = new HashMap<String, String>();
    //     initParameters.put("casServerUrlPrefix", "https://newca.zjxu.edu.cn/cas");
    //     registration.setInitParameters(initParameters);
    //     // 设定加载的顺序
    //     registration.setOrder(1);
    //     return registration;
    // }
    //
    // /**
    //  * 配置授权过滤器
    //  * @return
    //  */
    // @Bean
    // public FilterRegistrationBean filterAuthenticationRegistration() {
    //     final FilterRegistrationBean registration = new FilterRegistrationBean();
    //     registration.setFilter(new AuthenticationFilter());
    //     // 设定匹配的路径
    //     registration.addUrlPatterns("/*");
    //     Map<String,String>  initParameters = new HashMap<String, String>();
    //     initParameters.put("casServerLoginUrl", "https://newca.zjxu.edu.cn/cas/login");
    //     initParameters.put("serverName", "http://my.zjipc.cn");
    //     initParameters.put("ignorePattern", "/*/out/*|/*/plug-in/*|index.do|/*favicon.ico");
    //     registration.setInitParameters(initParameters);
    //     // 设定加载的顺序
    //     registration.setOrder(2);
    //     return registration;
    // }
    //
    // /**
    //  * 配置过滤验证器 这里用的是Cas30ProxyReceivingTicketValidationFilter
    //  * @return
    //  */
    // @Bean
    // public FilterRegistrationBean filterValidationRegistration() {
    //     final FilterRegistrationBean registration = new FilterRegistrationBean();
    //     registration.setFilter(new Cas30ProxyReceivingTicketValidationFilter());
    //     // 设定匹配的路径
    //     registration.addUrlPatterns("/*");
    //     Map<String,String> initParameters = new HashMap<String, String>();
    //     initParameters.put("casServerUrlPrefix", "https://newca.zjxu.edu.cn/cas");
    //     initParameters.put("serverName", "http://my.zjipc.cn");
    //     initParameters.put("redirectAfterValidation", "true");
    //     initParameters.put("encoding", "UTF-8");
    //     registration.setInitParameters(initParameters);
    //     // 设定加载的顺序
    //     registration.setOrder(3);
    //     return registration;
    // }
    //
    // /**
    //  * request wrapper过滤器
    //  * @return
    //  */
    // @Bean
    // public FilterRegistrationBean filterWrapperRegistration() {
    //     final FilterRegistrationBean registration = new FilterRegistrationBean();
    //     registration.setFilter(new HttpServletRequestWrapperFilter());
    //     // 设定匹配的路径
    //     registration.addUrlPatterns("/*");
    //     // 设定加载的顺序
    //     registration.setOrder(4);
    //     return registration;
    // }
    //
    // /**
    //  * 添加监听器
    //  * @return
    //  */
    // @Bean
    // public ServletListenerRegistrationBean<EventListener> singleSignOutListenerRegistration() {
    //     ServletListenerRegistrationBean<EventListener> registrationBean = new ServletListenerRegistrationBean<EventListener>();
    //     registrationBean.setListener(new SingleSignOutHttpSessionListener());
    //     registrationBean.setOrder(1);
    //     return registrationBean;
    // }
}
